/**
 *******************************************************************************
 * @brief       Provide a brief description of the module here (Single line).
 * 
 * @author      Ashwin
 * 
 * @file        PalHd44780_Fonts.c
 * 
 * @version
 * 
 * @date        Feb 16, 2012 6:56:01 PM
 * 
 * @details     Provide a detailed description of the module here (Multi-line).
 * 
 * @pre         Mention any preconditions required to use this module.
 * 
 * @bug         List any bugs in this module.
 * 
 * @note        List any odd modes while using this module.
 * 
 * @warning     List any warnings against using the objects of this module.
 *******************************************************************************
 * @copyright 2012
 * <a href="http://www.afflatustech.com">Afflatus Techtronics</a>
 * and <a href="http://www.ashwinvijayakumar.co.nr">Ashwin Vijayakumar</a>
 * @n@n
 * This work is licensed under the Creative Commons
 * Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy
 * of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or
 * send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain
 * View, California, 94041, USA.
 *******************************************************************************
 */

/**@cond -----------------------------------------------------------------------
 * Includes section
 * Add all #include here.
 * ----------------------------------------------------------------- @endcond */

/**@cond System headers -------------------------------------------- @endcond */

/**@cond Local headers --------------------------------------------- @endcond */
#include "PalHd44780_Fonts.h"
#include "PalHd44780.h"

/**@cond -----------------------------------------------------------------------
 * typedef section (File scope)
 * Add typedef's with file scope here.
 * Capitalization: Upper_Camel_Case.
 * Declare typedef's with project scope in PalHd44780_Fonts.h.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Constants section (File scope)
 * Add all constants with file scope here.
 * Capitalization: ALL_CAPS.
 * Note that all constants listed here are limited to this file scope.
 * For project wide scope, declare constants in PalHd44780_Fonts.h.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Macros section (File scope)
 * Add all macros with file scope here.
 * Capitalization: ALL_CAPS.
 * Note that all macros listed here are limited to this file scope.
 * For project wide scope, declare macros in PalHd44780_Fonts.h.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Global variables section (File scope)
 * Add global variables with file scope here. 
 * Capitalization: lower_case.
 * Declare them with 'static' keyword.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Global variables section (Project scope)
 * PROJECT SCOPE G-VARIABLES ARE LIKE FORBIDDEN FRUIT. REFRAIN FROM USING THEM, 
 * DECLARE FILE SCOPE G-VARIABLES INSTEAD AND DEFINE GETTER/SETTER METHODS TO 
 * ACCESS THEM.
 * Add global variables with project scope here. 
 * Capitalization: lower_case.
 * Declare them without 'static' keyword.
 * Also declare these variables in PalHd44780_Fonts.h with 'extern' keyword.
 * ----------------------------------------------------------------- @endcond */

PalHd44780_FontPlotType PalHd44780_15x16FontPlot[64] = {
    /* 00 */ 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
    /* 08 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x1F,
    /* 16 */ 0x1F, 0x1F, 0x1F, 0x00, 0x00, 0x1F, 0x1F, 0x1F,
    /* 24 */ 0x07, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
    /* 32 */ 0x1C, 0x1E, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
    /* 40 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1C,
    /* 48 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x0F, 0x07,
    /* 56 */ 0x10, 0x18, 0x1C, 0x1E, 0x0F, 0x07, 0x03, 0x01
};

#if( PAL_HD44780_NO_OF_ROWS >= 2 )
PalHd44780_FontIndexType PalHd44780_15x16FontIndex[301] = {
    /* Width, X0Y0, X0Y1, X0Y2, X1Y0, X1Y1, X1Y2 */
    /* '0' */
    0x03, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF,
    /* '1' */
    0x03, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10,
    /* '2' */
    0x03, 0x02, 0x02, 0xFF, 0xFF, 0x01, 0x01,
    /* '3' */
    0x03, 0x02, 0x02, 0xFF, 0x01, 0x01, 0xFF,
    /* '4' */
    0x03, 0xFF, 0x01, 0xFF, 0x10, 0x10, 0xFF,
    /* '5' */
    0x03, 0xFF, 0x02, 0x02, 0x01, 0x01, 0xFF,
    /* '6' */
    0x03, 0xFF, 0x02, 0x02, 0xFF, 0x01, 0xFF,
    /* '7' */
    0x03, 0x00, 0x00, 0xFF, 0x10, 0x10, 0xFF,
    /* '8' */
    0x03, 0xFF, 0x02, 0xFF, 0xFF, 0x01, 0xFF,
    /* '9' */
    0x03, 0xFF, 0x02, 0xFF, 0x01, 0x01, 0xFF,
    /* ':' */
    0x01, 0xA1, 0xA1, 0x10, 0x10, 0x10, 0x10,
    /* ';' */
    0x01, 0xA1, 0x27, 0x10, 0x10, 0x10, 0x10,
    /* '<' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '=' */
    0x01, 0x01, 0x00, 0x10, 0x10, 0x10, 0x10,
    /* '>' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '?' */
    0x01, 0x00, 0x06, 0x10, 0xFF, 0x00, 0x00,
    /* '@' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* 'A' */
    0x03, 0x03, 0x02, 0x04, 0xFF, 0x10, 0xFF,
    /* 'B' */
    0x03, 0xFF, 0x02, 0x04, 0xFF, 0x01, 0x05,
    /* 'C' */
    0x03, 0x03, 0x00, 0x00, 0x06, 0x01, 0x01,
    /* 'D' */
    0x03, 0xFF, 0x00, 0x04, 0xFF, 0x01, 0x05,
    /* 'E' */
    0x03, 0xFF, 0x02, 0x00, 0xFF, 0x01, 0x01,
    /* 'F' */
    0x03, 0xFF, 0x02, 0x00, 0xFF, 0x10, 0x10,
    /* 'G' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x04,
    /* 'H' */
    0x03, 0xFF, 0x01, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'I' */
    0x03, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x01,
    /* 'J' */
    0x03, 0x00, 0xFF, 0x00, 0x01, 0x05, 0x10,
    /* 'K' */
    0x03, 0xFF, 0x01, 0x05, 0xFF, 0x10, 0x04,
    /* 'L' */
    0x03, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01,
    /* 'M' */
    0x03, 0x03, 0xFF, 0x04, 0xFF, 0x10, 0xFF,
    /* 'N' */
    0x03, 0xFF, 0x07, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'O' */
    0x03, 0x03, 0x00, 0x04, 0x06, 0x01, 0x05,
    /* 'P' */
    0x03, 0xFF, 0x02, 0x04, 0xFF, 0x10, 0x10,
    /* 'Q' */
    0x03, 0x03, 0x00, 0x04, 0x06, 0x07, 0x05,
    /* 'R' */
    0x03, 0xFF, 0x02, 0x04, 0xFF, 0x10, 0x07,
    /* 'S' */
    0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x05,
    /* 'T' */
    0x03, 0x00, 0xFF, 0x00, 0x10, 0xFF, 0x10,
    /* 'U' */
    0x03, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05,
    /* 'V' */
    0x03, 0x03, 0x10, 0x04, 0x06, 0x01, 0x05,
    /* 'W' */
    0x03, 0xFF, 0x10, 0xFF, 0x06, 0xFF, 0x05,
    /* 'X' */
    0x03, 0x06, 0x01, 0x05, 0x03, 0x10, 0x04,
    /* 'Y' */
    0x03, 0x06, 0x01, 0x05, 0x10, 0xFF, 0x10,
    /* 'Z' */
    0x03, 0x00, 0x02, 0x05, 0x03, 0x01, 0x01
};
#endif /* #if( PAL_HD44780_NO_OF_ROWS >= 2 ) */

#if( PAL_HD44780_NO_OF_ROWS >= 4 )
PalHd44780_FontIndexType PalHd44780_15x32FontIndex[560] = {
    /* Width, X0Y0, X0Y1, X0Y2, X1Y0, X1Y1, X1Y2, X2Y0, X2Y1, X2Y2, X3Y0, X3Y1, X3Y2 */
    /* '0' */
    0x03, 0xFF, 0x00, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0xFF,
    /* '1' */
    0x03, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10,
    /* '2' */
    0x03, 0x00, 0x00, 0xFF, 0x01, 0x01, 0xFF, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01,
    /* '3' */
    0x03, 0x00, 0x00, 0xFF, 0x01, 0x01, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01, 0xFF,
    /* '4' */
    0x03, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF,
    /* '5' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x01, 0x10, 0x10, 0xFF, 0x01, 0x01, 0xFF,
    /* '6' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x01, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0xFF,
    /* '7' */
    0x03, 0x00, 0x00, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF,
    /* '8' */
    0x03, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0xFF,
    /* '9' */
    0x03, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01, 0xFF,
    /* ':' */
    0x01, 0x10, 0xA1, 0xA1, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* ';' */
    0x01, 0x10, 0xA1, 0x27, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '<' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '=' */
    0x01, 0x10, 0x01, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '>' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '?' */
    0x01, 0x00, 0x06, 0x10, 0xFF, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* '@' */
    0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
    /* 'A' */
    0x03, 0x03, 0x00, 0x04, 0xFF, 0x01, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'B' */
    0x03, 0xFF, 0x00, 0x04, 0xFF, 0x01, 0x05, 0xFF, 0x10, 0x04, 0xFF, 0x01, 0x05,
    /* 'C' */
    0x03, 0x03, 0x00, 0x00, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0x06, 0x01, 0x01,
    /* 'D' */
    0x03, 0xFF, 0x00, 0x04, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0x05,
    /* 'E' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x01, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01,
    /* 'F' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x01, 0x01, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10,
    /* 'G' */
    0x03, 0xFF, 0x00, 0x00, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x04, 0xFF, 0x01, 0xFF,
    /* 'H' */
    0x03, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'I' */
    0x03, 0x00, 0xFF, 0x00, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x01, 0xFF, 0x01,
    /* 'J' */
    0x03, 0x00, 0xFF, 0x00, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0xFF, 0x05, 0x10,
    /* 'K' */
    0x03, 0xFF, 0x10, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0x10, 0x04, 0xFF, 0x10, 0xFF,
    /* 'L' */
    0x03, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x01, 0x01,
    /* 'M' */
    0x03, 0x03, 0xFF, 0x04, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'N' */
    0x03, 0xFF, 0x07, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF,
    /* 'O' */
    0x03, 0x03, 0x00, 0x04, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05,
    /* 'P' */
    0x03, 0xFF, 0x00, 0x04, 0xFF, 0x01, 0x05, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10,
    /* 'Q' */
    0x03, 0x03, 0x00, 0x04, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0x06, 0x07, 0x05,
    /* 'R' */
    0x03, 0xFF, 0x00, 0x04, 0xFF, 0x01, 0x05, 0xFF, 0x10, 0x04, 0xFF, 0x10, 0xFF,
    /* 'S' */
    0x03, 0x03, 0x00, 0x00, 0xFF, 0x01, 0x01, 0x10, 0x10, 0xFF, 0x01, 0x01, 0x05,
    /* 'T' */
    0x03, 0x00, 0xFF, 0x00, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10,
    /* 'U' */
    0x03, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05,
    /* 'V' */
    0x03, 0x03, 0x10, 0x04, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05,
    /* 'W' */
    0x03, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0xFF, 0x10, 0xFF, 0x06, 0xFF, 0x05,
    /* 'X' */
    0x03, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05, 0x03, 0x10, 0x04, 0xFF, 0x10, 0xFF,
    /* 'Y' */
    0x03, 0xFF, 0x10, 0xFF, 0x06, 0x01, 0x05, 0x10, 0xFF, 0x10, 0x10, 0xFF, 0x10,
    /* 'Z' */
    0x03, 0x00, 0x00, 0xFF, 0x10, 0x01, 0x05, 0x03, 0x10, 0x10, 0x06, 0x01, 0x01
};
#endif /* [#if( PAL_HD44780_NO_OF_ROWS >= 4 )] */

PalHd44780_FontPlotType PalHd44780_MarioRunRight1Plot[48] = {
    /* 00 */ 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01,
    /* 08 */ 0x1F, 0x1F, 0x1D, 0x1D, 0x1F, 0x1F, 0x1F, 0x1F,
    /* 16 */ 0x00, 0x18, 0x00, 0x18, 0x1C, 0x18, 0x10, 0x00,
    /* 24 */ 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00,
    /* 32 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1C,
    /* 40 */ 0x00, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00, 0x00,
};

PalHd44780_FontPlotType PalHd44780_MarioRunRight2Plot[48] = {
    /* 00 */ 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01,
    /* 08 */ 0x1F, 0x1F, 0x1D, 0x1D, 0x1F, 0x1F, 0x1F, 0x1F,
    /* 16 */ 0x00, 0x18, 0x00, 0x18, 0x1C, 0x18, 0x10, 0x00,
    /* 24 */ 0x01, 0x03, 0x07, 0x07, 0x07, 0x1E, 0x18, 0x00,
    /* 32 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1E, 0x1F,
    /* 40 */ 0x10, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
};

PalHd44780_FontPlotType PalHd44780_MarioRunRight3Plot[48] = {
    /* 00 */ 0x00, 0x01, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01,
    /* 08 */ 0x1F, 0x1F, 0x1D, 0x1D, 0x1F, 0x1F, 0x1F, 0x1F,
    /* 16 */ 0x00, 0x18, 0x00, 0x18, 0x1C, 0x18, 0x10, 0x00,
    /* 24 */ 0x1F, 0x1F, 0x1D, 0x03, 0x07, 0x0F, 0x0F, 0x07,
    /* 32 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x13, 0x00,
    /* 40 */ 0x1F, 0x1F, 0x0E, 0x0E, 0x1E, 0x1E, 0x1E, 0x00,
};

PalHd44780_FontPlotType* PalHd44780_MarioRunRightIndex[3] = {
    PalHd44780_MarioRunRight1Plot,
    PalHd44780_MarioRunRight2Plot,
    PalHd44780_MarioRunRight3Plot
};
/**@cond -----------------------------------------------------------------------
 * Function prototypes section (File scope)
 * Add prototypes for all functions with file scope here. 
 * Capitalization: lower_Camel_Case.
 * Declare them with 'static' keyword.
 * For functions with project scope, declare the function prototype in 
 * PalHd44780_Fonts.h without 'static' keyword.
 * ----------------------------------------------------------------- @endcond */

/**@cond -----------------------------------------------------------------------
 * Getter/setter method section (Project scope)
 * Define getter/setter methods to provide project scope global access to file 
 * scope global variables. (AVOID USING THESE IF YOU HAVE THROUGHPUT ISSUES).
 * Capitalization: get_Camel_Case/is_Camel_Case/set_Camel_Case.
 * Declare the prototype for these functions in PalHd44780_Fonts.h.
 * ----------------------------------------------------------------- @endcond */

/** TODO: Add user functions here, use function_body template */


/** END OF FILE ********************* Copyright (C) 2012 Afflatus Techtronics */
